5.4 . Binutils - 2.24 - Fase 1

El paquete Binutils contiene un enlazador, un ensamblador y otras utilidades para trabajar objetos del sistema.

Espacio requerido en disco estimado de construcción : 1 SBU
Espacio requerido en disco : 404 MB

5.4.1. Instalación de Cross Binutils

[Note]

Nota

Vuelva atrás y lea las notas en la sección anterior. La comprensión de las notas resaltadas como importante le ahorrará un montón de problemas más adelante.

Es importante que Binutils sea el primer paquete que compiles, pues tanto Glibc como GCC llevan a cabo varias comprobaciones sobre el enlazador y ensamblador para determinar cuáles de sus características hay que activar.

La documentación de Binutils recomienda construirlo fuera del directorio de las fuentes (sources), en un directorio de construcción dedicado :

mkdir -v ../binutils-build
cd ../binutils-build
[Note]

Nota

Para que los valores de los SBUs mostrados en el resto del libro puedan ser de alguna utilidad , mide el Espacio requerido en disco que tarda en construirse este paquete desde la compilación hasta la primera instalación . Para ello , envuelve los comandos dentro de un comando time de esta manera: time { ./configure ... && ... && make install; }.

[Note]

Nota

Los valores aproximados de SBU durante la construcción y el espacio requerido en disco del Capítulo 5 no incluyen datos del banco de pruebas.

Ahora prepara Binutils para la compilación:

../binutils-2.24/configure     \
    --prefix=/tools            \
    --with-sysroot=$LFS        \
    --with-lib-path=/tools/lib \
    --target=$LFS_TGT          \
    --disable-nls              \
    --disable-werror

El significado de las opciones de configure:

--prefix=/tools

Esto le indica al script configure que prepare la instalación de los programas de Binutils en el directorio /tools.

--with-sysroot=$LFS

Para la compilación cruzada , esto le indica al sistema de construcción que mire en $LFS para encontrar las bibliotecas del sistema de destino , según sea necesario .

--with-lib-path=/tools/lib

Especifica que ruta de librería el enlazador debería estar configurado para usar.

--target=$LFS_TGT

Debido a que la descripción de la máquina en la variable LFS_TGT es ligeramente diferente que el valor devuelto por el script config.guess , este parámetro le dirá al script de configuración que ajuste el sistema de construcción de Binutil para la construcción de un enlazador cruzado.

--disable-nls

Esta opción desactiva la internacionalización como i18n ya que no es necesario en las herramientas temporales .

--disable-werror

Esto evita que la construcción se pare en el caso de que surjan advertencias del compilador del anfitrión.

Continúa con la compilación del paquete:

make

La compilación está completa . Normalmente deberíamos ejecutar ahora el banco de pruebas , pero en esta primera etapa el framework del conjunto de pruebas ( Tcl, Expect y DejaGNU ) aún no está en su lugar . Los beneficios de ejecutar las pruebas en este momento son mínimos, pues los programas de esta primera fase pronto serán sustituidos por los de la segunda .

Si la construcción tiene lugar en sistemas x86_64 , crea un enlace simbólico para garantizar la sanidad de la cadena de herramientas :

case $(uname -m) in
  x86_64) mkdir -v /tools/lib && ln -sv lib /tools/lib64 ;;
esac

Instala el paquete:

make install

Los detalles sobre este paquete se encuentran en la Sección 6.13.2 , "Contenido de Binutils ".